System and method for encoding and decoding data and references to data in machine-readable graphical codes

ABSTRACT

A system for decoding machine-readable graphical codes is provided. The system includes a graphical code reading device configured to read a graphical code and generate reference encoded source data. The reference encoded source data includes a first reference identifier and a second portion. The system also includes a computing device in electronic communication with the graphical code reading device. The computing device also includes a reference decoder configured to effect conversion of the reference encoded source data into source data. The source data includes first affiliated data in place of the first reference identifier. The first affiliated data may be longer in length than the first reference identifier. The source data also includes the second portion. The computing device also includes a software application configured to use the source data.

RELATED APPLICATIONS

[0001] This application is related to and claims priority from U.S.Patent Application Serial No. 60/283,681 filed Apr. 13, 2001, for“System and Method for Encoding Data and References to Data inMachine-Readable Graphical Codes to Support Dynamic Modification andAccess Control,” with inventors Paul Hepworth and Dimitri Yatsenko,which is incorporated herein by reference.

BACKGROUND OF THE INVENTION

[0002] 1. Field of the Invention

[0003] The present invention relates generally to the field ofgraphical-code reading computer systems. More specifically, the presentinvention relates to systems and methods for encoding and decoding dataand references to data in machine-readable graphical codes.

[0004] 2. Description of Related Background Art

[0005] Computer technology has entered many areas to simplify manualtasks and to make information more readily available. Most people useseveral computer programs every day that greatly simplify their workday. In addition, through the use of a computer, vast amounts ofinformation are readily available. Computer software and electronicinformation sources are typically found on storage media or storagedevices such as hard drives, CD-ROMs, DVD-ROMs, etc., on a localcomputer, on a local computer network or a global computer network, suchas the Internet.

[0006] Computer programs can be used for many purposes includingassisting a person in performing his or her job. For example, wordprocessors help computer users prepare documents, spreadsheet programshelp users perform accounting functions and numerical analysis,diagnostic programs assist users in diagnosing problems, etc. There aremany programs available to help users with almost any need they mayhave. Typically, computer programs operate upon source data in order tohelp a user. Thus, the source data must somehow be input into thecomputer program.

[0007] One way to input source data into a computer program involves theuse of machine-readable graphical codes, such as bar codes, matrixcodes, etc. A graphical code is a graphical representation of sourcedata. A user may scan the graphical code with a graphical code readingdevice, which converts the graphical code back into source data.Typically, the graphical code reading device is in electroniccommunication with a computer program. After the graphical code readingdevice converts the graphical code into source data, it typically sendsthe source data to the computer program. The computer program may thenuse the source data to accomplish one or more tasks.

[0008] The amount of source data that can be encoded directly intographical codes is limited by the size of the supported characters inthe code's symbology. For example, some codes can store only numbers,some codes can store only ASCII characters, and so forth. Thus, it wouldbe beneficial if means were provided to enable more source data to beencoded into machine-readable graphical codes. It would also bebeneficial if means were provided to facilitate decoding of suchmachine-readable graphical codes.

BRIEF DESCRIPTION OF THE DRAWINGS

[0009] Non-exhaustive embodiments of the invention are described withreference to the figures, in which:

[0010]FIG. 1 is a block diagram of an embodiment of a system forencoding machine-readable graphical codes;

[0011]FIG. 2 is a block diagram of an embodiment of a system fordecoding machine-readable graphical codes;

[0012]FIG. 3 is a block diagram of an alternative embodiment of a systemfor encoding machine-readable graphical codes;

[0013]FIG. 4 is a block diagram of an alternative embodiment of a systemfor decoding machine-readable graphical codes;

[0014]FIG. 5 is a block diagram of an alternative embodiment of a systemfor decoding machine-readable graphical codes;

[0015]FIG. 6 is a block diagram of an embodiment of the source data;

[0016]FIG. 7 is a block diagram of an embodiment of the referenceencoded source data;

[0017]FIG. 8 is a block diagram of an embodiment of the referencedatabase;

[0018]FIG. 9 is a flow diagram of a method for effecting conversion ofthe source data into reference encoded source data;

[0019]FIG. 10 is a flow diagram of a method for effecting conversion ofthe reference encoded source data into source data;

[0020]FIG. 11 is a block diagram of an embodiment of a referenceidentifier;

[0021]FIG. 12 is a block diagram of an embodiment of a prefix;

[0022]FIG. 13 is a block diagram of an embodiment of a suffix;

[0023]FIG. 14 is a block diagram of an embodiment of a symbol set;

[0024]FIG. 15 is a flow diagram illustrating a method for creating a newreference identifier;

[0025]FIG. 16 is a block diagram of an embodiment of a data structurethat may be used to store the reference database;

[0026]FIG. 17 is a flow diagram of a method for associating a portion ofsource data and a reference identifier;

[0027]FIG. 18 is a flow diagram of a method for retrieving dataassociated with a reference identifier;

[0028]FIG. 19 is a block diagram of an alternate embodiment of a systemfor decoding machine-readable graphical codes;

[0029]FIG. 20 is a flow diagram of a method for locating a referencedatabase that contains a reference identifier found in the referenceencoded source data;

[0030]FIG. 21 is a block diagram of an alternative embodiment of areference database;

[0031]FIG. 22 is a flow diagram of an alternative method for locating areference database that contains a reference identifier found in thereference encoded source data;

[0032]FIG. 23 is a block diagram illustrating an alternative embodimentof a system for decoding machine-readable graphical codes;

[0033]FIG. 24 is a block diagram of an embodiment of the serverdatabase;

[0034]FIG. 25 is a flow diagram of a method for locating a referencedatabase that contains a reference identifier identified in thereference encoded source data;

[0035]FIG. 26 is a block diagram of an alternative embodiment of sourcedata that may be generated by the data generator;

[0036]FIG. 27 is a block diagram of an embodiment of reference encodedsource data;

[0037]FIG. 28 is a block diagram of an embodiment of an alternativesystem for decoding machine-readable graphical codes;

[0038]FIG. 29 is a block diagram of an embodiment of the user designatedreference encoded source data;

[0039]FIG. 30 is a block diagram of an embodiment of the user designatedsource data;

[0040]FIG. 31 is a block diagram of an embodiment of the accessdatabase;

[0041]FIG. 32 is a flow diagram of a method for controlling use of theuser designated source data;

[0042]FIG. 33 is a block diagram of an alternative embodiment of asystem for decoding machine-readable graphical codes;

[0043]FIG. 34 is a block diagram of an embodiment of a file request;

[0044]FIG. 35 is a block diagram of an embodiment of a redirect webfile; and

[0045]FIG. 36 is a block diagram of hardware components that may be usedin an embodiment of a computing device.

DETAILED DESCRIPTION

[0046] A method for encoding machine-readable graphical codes isprovided. The method includes receiving source data. The source dataincludes a first portion and a second portion. The method also includeseffecting conversion of the source data into reference encoded sourcedata. The reference encoded source data includes a first referenceidentifier in place of the first portion. The first reference identifiermay be shorter in length than the first portion. The reference encodedsource data also includes the second portion. The method also includessending the reference encoded source data to a graphical code generatorthat is configured to convert the reference encoded source data into agraphical code. In one embodiment, the first reference identifier doesnot include a terminating symbol.

[0047] Effecting conversion of the source data into reference encodedsource data may include obtaining the first reference identifier andassociating the first portion of the source data with the firstreference identifier. Associating the first portion of the source datawith the first reference identifier may involve storing the firstportion of the source data and the first reference identifier in areference database.

[0048] In one embodiment, obtaining the first reference identifierinvolves creating the first reference identifier. The first referenceidentifier may include a prefix and a suffix. In such an embodiment,creating the first reference identifier may involve locating apreviously assigned reference identifier in the reference database. Thepreviously assigned reference identifier may include the prefix and apreviously assigned suffix. Creating the first reference identifier mayalso involve forming the suffix by incrementing the previously assignedsuffix. In another embodiment, obtaining the first reference identifiermay involve locating an expired reference identifier in the referencedatabase. The expired reference identifier may include the prefix andthe suffix.

[0049] A method for decoding machine-readable graphical codes is alsoprovided. The method includes receiving reference encoded source data.The reference encoded source data includes a first reference identifierand a second portion. The method also includes effecting conversion ofthe reference encoded source data into source data. The source dataincludes first affiliated data in place of the first referenceidentifier. The first affiliated data may be longer in length than thefirst reference identifier. The source data also includes the secondportion. The method also includes making the source data available to asoftware application. In one embodiment, the first reference identifierdoes not include a terminating symbol.

[0050] Effecting conversion of the reference encoded source data intosource data may include locating a reference database that contains thefirst reference identifier and the first affiliated data, and retrievingthe first affiliated data from the reference database.

[0051] The reference database may be stored on a server. In such anembodiment, locating the reference database may include establishingcommunication with the server over a network.

[0052] In one embodiment, the reference database may be stored on afirst server and on a second server. In such an embodiment, locating thereference database may include attempting to establish communicationwith the first server over a network, and establishing communicationwith the second server over the network.

[0053] The first reference identifier and the first affiliated data maybe stored in a first record in the reference database. In such anembodiment, retrieving the first affiliated data from the referencedatabase may include downloading the first record from the server. Thereference database may also include a second record. The second recordmay include a second reference identifier and second affiliated data.The second affiliated data may be associated with the second referenceidentifier. Retrieving the first affiliated data from the referencedatabase may also include downloading the second record from the server.

[0054] The source data may include command data that may be recognizedby the software application as a command to perform a task. In such anembodiment, the method may also include determining whether a user ofthe software application is authorized to effect performance of thetask.

[0055] In one embodiment, the reference encoded source data may be areference encoded URL, the source data may be a URL, and the softwareapplication may be a web browser. In such an embodiment, effectingconversion of the reference encoded URL into the URL may include sendingthe reference encoded URL to a dynamic web server as part of a filerequest. The method may also include receiving a web file from thedynamic web server. The web file or its header may include the URL and aredirect or refresh tag which causes the web browser to access a webpage corresponding to the URL.

[0056] A system for encoding machine-readable graphical codes is alsoprovided. The system includes a data generator configured to providesource data. The source data includes a first portion and a secondportion. The system also includes a computing device in electroniccommunication with the data generator. The computing device includes aprocessor and a memory in electronic communication with the processor.The computing device also includes a reference encoder configured toeffect conversion of the source data into reference encoded source data.The reference encoded source data includes a first reference identifierin place of the first portion. The first reference identifier may beshorter in length than the first portion. The reference encoded sourcedata also includes the second portion. The computing device alsoincludes a graphical code generator configured to convert the referenceencoded source data into a graphical code. In one embodiment, the firstreference identifier does not include a terminating symbol.

[0057] The reference encoder may effect conversion of the source datainto reference encoded source data by obtaining the first referenceidentifier and associating the first portion of the source data with thefirst reference identifier. Associating the first portion of the sourcedata with the first reference identifier may include storing the firstportion of the source data and the first reference identifier in areference database.

[0058] Obtaining the first reference identifier may include creating thefirst reference identifier. In one embodiment, the first referenceidentifier includes a prefix and a suffix. In such an embodiment,creating the first reference identifier may include locating apreviously assigned reference identifier in the reference database. Thepreviously assigned reference identifier may include the prefix and apreviously assigned suffix. Creating the first reference identifier mayalso include forming the suffix by incrementing the previously assignedsuffix. In another embodiment, obtaining the first reference identifiermay include locating an expired reference identifier in the referencedatabase. The expired reference identifier may include the prefix andthe suffix.

[0059] A system for decoding machine-readable graphical codes is alsoprovided. The system includes a graphical code reading device configuredto read a graphical code and generate reference encoded source data. Thereference encoded source data includes a first reference identifier anda second portion. The system also includes a computing device inelectronic communication with the graphical code reading device. Thecomputing device also includes a processor, a memory in electroniccommunication with the processor, and a communications port inelectronic communication with the processor for communicating with thegraphical code reading device.

[0060] The computing device also includes a reference decoder configuredto effect conversion of the reference encoded source data into sourcedata. The source data includes first affiliated data in place of thefirst reference identifier. The first affiliated data may be longer inlength than the first reference identifier. The source data alsoincludes the second portion. The computing device also includes asoftware application configured to use the source data. In oneembodiment, the first reference identifier does not include aterminating symbol.

[0061] The reference decoder may effect conversion of the referenceencoded source data into source data by locating a reference databasethat contains the first reference identifier and the first affiliateddata, and retrieving the first affiliated data from the referencedatabase.

[0062] The reference database may be stored on a server. In such anembodiment, locating the reference database may include establishingcommunication with the server over a network. In another embodiment, thereference database may be stored on a first server and on a secondserver. In such an embodiment, locating the reference database mayinclude attempting to establish communication with the first server overa network, and establishing communication with the second server overthe network.

[0063] The computing device may also include a cache in electroniccommunication with the reference decoder. The first reference identifierand the first affiliated data may be stored in a first record in thereference database. In such an embodiment, retrieving the firstaffiliated data from the reference database may include downloading thefirst record from the server and storing the first record in the cache.The reference database may also include a second record. The secondrecord may include a second reference identifier and second affiliateddata. The second affiliated data may be associated with the secondreference identifier. Retrieving the first affiliated data from thereference database may also include downloading the second record fromthe server and storing the second record in the cache.

[0064] The source data may include command data that may be recognizedby the software application as a command to perform a task. Thecomputing device may also include an access control module configured todetermine whether a user of the software application is authorized toeffect performance of the task.

[0065] In one embodiment, the reference encoded source data may be areference encoded URL, the source data may be a URL, and the softwareapplication may be a web browser. In such an embodiment, the referencedecoder may effect conversion of the reference encoded URL into the URLby sending the reference encoded URL to the web browser. The web browsermay be configured to send the reference encoded URL to a dynamic webserver as part of a file request. The web browser may also be configuredto receive a web file from the dynamic web server. The web file or itsheader may include the URL and a refresh or redirect tag which causesthe web browser to access a web page corresponding to the URL.

[0066]FIG. 1 is a block diagram of an embodiment of a system 100 forencoding machine-readable graphical codes. The system 100 includes acomputing device 110. The computing device 110 may be a personalcomputer, workstation, handheld computer, personal digital assistant,cell phone, game machine, microcontroller, server, mainframe,supercomputer, or any variation or related device thereof.

[0067] The system 100 also includes a data generator 112 in electroniccommunication with the computing device 110. The data generator 112 maybe any type of device that is capable of providing source data 114 thatmay be utilized by the computing device 110. In FIG. 1, the datagenerator 112 is shown as being separate from the computing device 110.For example, the data generator 112 may be an input device (e.g.,keyboard, mouse, microphone, etc.) that may be used to input the sourcedata 114 into the computing device 110. Alternatively, the datagenerator 112 may be located within the computing device 110. Forexample, the data generator 112 may be a file containing the source data114 that is stored within the computing device 110.

[0068] The computing device 110 may include a reference encoder 116 thatis configured to receive the source data 114 and effect conversion ofthe source data 114 into reference encoded source data 118. In oneembodiment, the source data 114 may include a first portion and a secondportion. In such an embodiment, the reference encoded source data 118may include a reference identifier in place of the first portion. Thereference encoded source data 118 may also include the second portion.For example, the source data 114 may be a URL that includes a domainname and a file name. The reference encoded source data 118 may includea reference identifier in place of the domain name. The referenceencoded source data 118 may also include the file name.

[0069] The computing device 110 may include a reference database 120that is in electronic communication with the reference encoder 116. Thereference database 120 includes information that may be used to effectconversion of the source data 114 into reference encoded source data118. For example, in one embodiment, effecting conversion of the sourcedata 114 into reference encoded source data 118 may involve creating newreference identifiers. In such an embodiment, the reference database 120may store previously used reference identifiers, and the referenceencoder 116 may examine the previously used reference identifiers inorder to create new reference identifiers. After the reference encoder116 has effected conversion of the source data 114 into referenceencoded source data 118, the reference encoder 116 may update theinformation stored in the reference database 120.

[0070] The computing device 110 may also include a graphical codegenerator 122 that is in electronic communication with the referenceencoder 116. The graphical code generator 122 is configured to convertthe reference encoded source data 118 into a graphical code 124. Thegraphical code 124 may be a bar code, matrix code, or any other type ofcode that may be read by a graphical code reading device. Graphical codegenerators 122 are commercially available and known to those skilled inthe art.

[0071] The system 100 may include functionality in addition to thatexplicitly shown in FIG. 1. For example, in one embodiment the system100 may include a compression encoder configured to compress the sourcedata 114 and/or the reference encoded source data 118. The compressionencoder may operate according to any number of known techniques, such asHuffman encoding, multiple symbol encoding, etc.

[0072]FIG. 2 is a block diagram of an embodiment of a system 200 fordecoding machine-readable graphical codes. The system 200 shown in FIG.2 may include a computing device 210. The computing device 210 may bethe same computing device 110 that is shown in FIG. 1, or it may be adifferent computing device 210.

[0073] The system 200 may also include a graphical code reading device212. The graphical code reading device 212 may be a bar code scanner,matrix code scanner, or any other device capable of reading thegraphical code 124 and converting it into reference encoded source data118. Graphical code reading devices 212 are commercially available andknown to those skilled in the art.

[0074] The computing device 210 may include a reference decoder 214 thatis configured to receive the reference encoded source data 118 andeffect conversion of the reference encoded source data 118 back into thesource data 114.

[0075] As stated previously, in one embodiment the source data 114 mayinclude a first portion and a second portion, and the reference encodedsource data 118 may include a reference identifier in place of the firstportion. In such an embodiment, effecting conversion of the referenceencoded source data 118 back into the source data 114 may involvereplacing the reference identifier with the first portion of the sourcedata 114. For example, as stated previously, the source data 114 may bea URL that includes a domain name and file name, and the referenceencoded source data 118 may include a reference identifier in place ofthe domain name. In such an embodiment, effecting conversion of thereference encoded source data 118 back into the source data 114 mayinvolve replacing the reference identifier with the domain name.

[0076] The computing device 210 may also include the reference database120 in electronic communication with the reference decoder 214. Thereference database 120 includes information that may be used to effectconversion of the reference encoded source data 118 back into the sourcedata 114. In one embodiment the reference database 120 may include alist of reference identifiers and the data associated with thosereference identifiers. In such an embodiment, effecting conversion ofthe reference encoded source data 118 back into the source data 114 mayinvolve identifying a reference identifier in the reference encodedsource data 118, looking up the data associated with that referenceidentifier in the reference database 120, and replacing the referenceidentifier with the associated data.

[0077] A software application 216 may be running on the computing device210. The application 216 is in electronic communication with thereference decoder 214 and is configured to receive the source data 114from the reference decoder 214. The application 216 may use the sourcedata 114 to accomplish one or more tasks. For example, in oneembodiment, the application 216 is a web browser and the source data 114is a URL. The web browser may use the URL to access a web pagecorresponding to the URL.

[0078] The system 200 may include functionality in addition to thatexplicitly shown in FIG. 2. For example, in one embodiment the system200 may include a compression decoder configured to decompress thereference encoded source data 118 and/or the source data 114. Thecompression decoder may operate according to any number of knowntechniques, such as Huffman decoding, multiple symbol decoding, etc.

[0079]FIG. 3 is a block diagram of an alternative embodiment of a system300 for encoding machine-readable graphical codes. The system shown inFIG. 3 is similar to the system 100 shown in FIG. 1 except for thefollowing. In FIG. 3, the reference database 120 is located on a server310 that is in electronic communication with the computing device 110over a network 312. The network 312 may be the Internet, a wide areanetwork (WAN), local area network (LAN), wireless network, etc.

[0080]FIG. 4 is a block diagram of an alternative embodiment of a system400 for decoding machine-readable graphical codes. The system 400 shownin FIG. 4 is similar to the system 200 shown in FIG. 2 except for thefollowing. In FIG. 4, the reference database 120 is located on a server410 that is in electronic communication with the computing device 210over a network 412. The server 410 may be the same server 310 that isshown in FIG. 3, or it may be a different server 410. Similarly, thenetwork 412 may be the same network 312 that is shown in FIG. 3, or itmay be a different network 412. As before, the network 412 may be theInternet, a wide area network (WAN), local area network (LAN), wirelessnetwork, etc.

[0081]FIG. 5 is a block diagram of an alternative embodiment of a system500 for decoding machine-readable graphical codes. The system 500 shownin FIG. 5 is similar to the system 200 shown in FIG. 2 except for thefollowing. In FIG. 5, the reference decoder 214 and the referencedatabase 120 are contained within the graphical code reading device 512.The graphical code reading device 512 includes one or more graphicalcode conversion modules 514 configured to read the graphical code 124and convert it 124 into reference encoded source data 118. The referencedecoder 214 is in electronic communication with the graphical codeconversion module 514 and receives the reference encoded source data 118from the graphical code conversion module 514. The reference decoder 214then converts the reference encoded source data 118 into source data114, and sends the source data 114 to the computing device 510, where it114 may be made available to the application 216.

[0082] In one embodiment, one or more reference identifiers may bereserved for use by the graphical code reading device 212, its driver,or the application 216 for performing substitution of dynamic data forthe reference identifier 730 (rather than using normal lookup). That is,a graphical code 124 may include one or more reserved referenceidentifiers. When the graphical code 124 is read, the graphical codereading device 212, its driver, or the application 216 may replace thereserved reference identifiers with corresponding information known tothe graphical code reading device 212.

[0083] For example, a graphical code 124 may include referenceidentifiers that instruct the graphical code reading device 212 toinsert an identifier that identifies the graphical code reading device212 and a screen resolution. In such an embodiment, when the application216 receives the source data 114, the application 216 may then recognizethe user according to the ID of his graphical code reading device 212.The application 216 may also present its content in a way optimized forhis screen resolution.

[0084] Alternatively, a graphical code 124 may include a referenceidentifier that instructs the application 216 to insert an identifierthat identifies the CD drive on the computing device 210. For example,the graphical code 124 may refer to <cd drive>\filename. When theapplication 216 receives the source data 114, it may still refer to <cddrive>\filename. The application 216 may then insert the CD drive (e.g.,the D drive, E drive, etc.) in place of <cd drive>. The source data 114would then refer to D:\filename (assuming the CD drive is the D drive).

[0085]FIG. 6 is a block diagram of an embodiment of the source data 614.In FIG. 6, the source data 614 includes a first portion 620 a and asecond portion 620 b. As stated previously, in one embodiment the sourcedata 614 may be a URL. In such an embodiment, the first portion 620 a ofthe source data 614 may be a domain name and the second portion 620 b ofthe source data 614 may be a file name.

[0086]FIG. 7 is a block diagram of an embodiment of the referenceencoded source data 718. The reference encoded source data 718 includesa reference identifier 730 in place of the first portion 620 a of thesource data 614 previously shown in FIG. 6. The reference encoded sourcedata 718 also includes the second portion 620 b of the source data 614previously shown in FIG. 6.

[0087] Of course, the embodiments of the source data 614 and thereference encoded source data 718 shown in FIGS. 6-7 are exemplary only.In alternative embodiments, multiple reference identifiers 730 may beused to replace multiple portions 620 of the source data. In addition,reference identifiers 730 may replace one or more portions 620 at thebeginning of the source data 614, in the middle of the source data 614,and/or at the end of the source data 614. Those skilled in the art willrecognize numerous alternative configurations for the source data 614and/or the reference encoded source data 718 in light of the teachingscontained herein.

[0088]FIG. 8 is a block diagram of an embodiment of the referencedatabase 820. The reference database 820 may include a plurality ofrecords 822. Each record 822 may include a reference identifier 830 anddata 832 that is associated with the reference identifier 830. In oneembodiment, the data 832 is a portion 620 of source data 114 that may bereplaced by the reference identifier 830 in order to create referenceencoded source data 118.

[0089] Each record 822 may also include a creation date 834 and anexpiration date 836. The creation date 834 may be the date that therecord 822 is created. The expiration date 836 may be the date that therecord expires, i.e., the date that the reference identifier 830 is nolonger associated with the data 832.

[0090] As will be explained in greater detail below, a cache may belocated on the computing device 110 to store records 822 from thereference database 120 that are downloaded from a server 410. In such anembodiment, each record 822 may also include a cache period 838. Theexpiration date 836 associated with a reference identifier 830 stored inthe cache may be set based on the cache period 838 associated with thereference identifier 830. If the reference identifier 830 is notexpected to change frequently, a long cache period 838 (e.g., perhapsseveral days or even months) may be assigned. If the referenceidentifier 830 is expected to change frequently, a shorter cache period838 (or no cache period 838) may be assigned.

[0091] The data 832 may be changed after a graphical code 124 containinga reference identifier 830 is created. For example, when a graphicalcode 124 is initially created, the first portion 620 a of the sourcedata 114 may include a first domain name. Thus, the data 832 in thereference database 820 will initially include the first domain name.After the graphical code 124 is created, however, the data 832 in thereference database 820 may be changed to include a second domain nameinstead of the first domain name. If that occurs, then after a userscans the graphical code 124, the first portion 620 a of the source data114 output by the reference decoder 214 will also include the seconddomain name instead of the first domain name.

[0092]FIG. 9 is a flow diagram of a method 900 for effecting conversionof the source data 114 into reference encoded source data 118. Themethod 900 begins by searching 904 for a portion 620 of the source data114 that has previously been associated with a reference identifier 730.If a portion 620 of the source data 114 that has previously beenassociated with a reference identifier 730 is found 906, that portion620 may be replaced 908 by the reference identifier 730.

[0093] In one embodiment, the method 900 may involve searching 904 therecords 822 of the reference database 820 for data 832 that matches oneor more portions 620 of the source data 114. If such data 832 is found906 in a record 822 of the reference database 820, the portions 620 ofthe source data 114 that match the data 832 may be replaced by thereference identifier 830 associated with the data 832 in the record 822.

[0094] If a portion 620 of the source data 114 that has previously beenassociated with a reference identifier 730 is not found 906, the method900 may involve searching 910 for a portion 620 of the source data 114that may be encoded by reference. In one embodiment, this may involveprompting a user of the computing device 110 to select a portion 620 ofthe source data 114 to encode by reference.

[0095] If a portion 620 of the source data 114 that may be encoded byreference is not found 912, the method ends 914. If a portion 620 of thesource data 114 that may be encoded by reference is found 912, a newreference identifier 730 may be created 916. The portion 620 of thesource data 114 found 912 previously may then be associated 918 with thenew reference identifier 730. In one embodiment, this step may involvestoring the reference identifier 830 and the portion 620 of the sourcedata 114 found 912 previously in the reference database 120. The method900 may then involve replacing the portion 620 of the source data 114found 912 previously with the new reference identifier 730. The method900 may then return to step 910 and proceed as described above.

[0096]FIG. 10 is a flow diagram of a method 1000 for effectingconversion of the reference encoded source data 118 into source data114. The method 1000 begins 1002 by searching 1004 for a referenceidentifier 730 within the reference encoded source data 118. As will beexplained below, in one embodiment this may involve searching 1004 thereference encoded source data 118 for certain reserved symbols thatidentify the presence of a reference identifier 730.

[0097] If a reference identifier 730 is not found 1006 within thereference encoded source data 118, the method ends 1008. If a referenceidentifier 730 is found 1006 within the reference encoded source data118, a reference database 120 that contains the reference identifier 730may be located 1010. Data 832 associated with the reference identifier730 may then be retrieved 1012 from the reference database 120, and thereference identifier 730 may be replaced 1014 with the associated data832. The method 1000 may then return to step 1004 and proceed asdescribed above.

[0098]FIG. 11 is a block diagram of an embodiment of a referenceidentifier 1130. The reference identifier 1130 includes a prefix 1132and a suffix 1134. The prefix 1132 may be positioned at the beginning ofthe reference identifier 1130, while the suffix 1134 may be positionedat the end of the reference identifier 1130.

[0099]FIG. 12 is a block diagram of an embodiment of a prefix 1232. Theprefix 1232 may include one or more symbols 1242. The prefix 1232 shownin FIG. 12 includes three symbols 1242 a-c. The prefix 1232 may alsoinclude one or more reserved symbols 1240. The prefix 1232 shown in FIG.12 includes two reserved symbols 1240 a-b. One reserved symbol 1240 a ispositioned at the beginning of the prefix 1232, while the other reservedsymbol 1240 b is positioned at the end of the prefix 1232. The symbols1242 and reserved symbols 1240 may be any character, indication,representation, or the like that may be converted into a graphical code124. Examples of symbols 1242 and reserved symbols 1240 include letters,numbers, punctuation marks, relational characters, etc. Typically, thereserved symbols 1240 are different than the symbols 1242, so that thereserved symbols 1240 may indicate the beginning and the end of theprefix 1232.

[0100]FIG. 13 is a block diagram of an embodiment of a suffix 1334. Thesuffix 1334 may include one or more symbols 1242. The suffix 1334 shownin FIG. 13 includes three symbols 1242 d-f. Like the symbols 1242 in theprefix 1232, the symbols 1242 in the suffix 1334 may be any character,indication, representation, or the like that may be converted into agraphical code 124, including letters, numbers, punctuation marks,relational characters, etc.

[0101] The symbols 1242 and the reserved symbols 1240 may be selectedfrom a symbol set 1410. The symbol set 1410 may include all availablesymbols 1242 and reserved symbols 1240, i.e., all symbols 1242 andreserved symbols 1240 that may be used in a prefix 1232 and/or a suffix1334. FIG. 14 is a block diagram of an embodiment of a symbol set 1410.In the embodiment shown in FIG. 14, the symbol set 1410 includes areserved subset 1412 that includes one or more reserved symbols 1240.The symbol set 1410 also includes a plurality of symbols 1242 that donot belong to the reserved subset 1412, i.e., the symbols 1242 and thereserved symbols 1240 in the reserved subset 1412 are different from oneanother.

[0102] In one embodiment, the source data 114 may include data elementsthat are not contained within the symbol set 1410. For example, if thesymbol set 1410 contains only numbers, the source data 114 may stillcontain other symbols, such as letters. In such an embodiment, the dataelements not contained within the symbol set 1410 must be converted intosymbols that are contained within the symbol set 1410. One approach foraccomplishing this may be summarized in the following four steps, whichmay be performed for each group of data elements that are not containedwithin the symbol set 1410:

[0103] 1. Pad each element in the group of data elements to apredetermined width of binary digits by adding leading zeroes.

[0104] 2. Form a binary number of the same width as in step 1 thatcontains the number of elements in the group (if the number of elementsin the group is larger than can be stored in a binary number of thiswidth, divide the group into multiple groups).

[0105] 3. Concatenate first the binary number of step 2 and then all thedata elements of step 1 into a single string of binary digits.

[0106] 4. Create a symbol sequence by dividing the string of binarydigits into words of the maximum width that will fit within the symbolset 1410, padding the last one to form a complete word. For example, ifthe symbol set is {0, 1, 2, 3, 4, 5, 6, 7, 8, 9}, the words will be 3binary digits wide; three binary digits can represent values 0 through7, which correspond to symbols 0 through 7 in the symbol set. Make oneof the reserved symbols 1240 a prefix 1232 to the symbol sequence.Replace the original data elements in the source data 114 with thesymbol sequence.

[0107] Source data 114 encoded in this manner may be referred to asalternate encoded source data 114. The reference decoder 214 may beconfigured to decode reference encoded source data 118 that includes analternate encoded sequence. Alternatively, the reference decoder 214 maybe configured to decode alternate encoded source data 114 (i.e., sourcedata 114 that includes an alternate encoded sequence but that does notinclude any reference identifiers 730). One approach for decoding analternate encoded sequence may be summarized in the following steps:

[0108] 1. Locate a reserved symbol 1240 that indicates the beginning ofthe alternate encoded sequence.

[0109] 2. Select the padded element width, which will be abbreviatedherein as w.

[0110] 3. Obtain the next symbol in the alternate encoded sequence.

[0111] 4. Convert the next symbol in the alternate encoded sequence frombase m to binary. The result of this operation will be abbreviatedherein as x.

[0112] 5. If x is narrower (in number of binary digits) than w, repeatstep 4 and append the result to x.

[0113] 6. Take the w leftmost bits of x and call it n.

[0114] 7. Delete the w leftmost bits of x.

[0115] 8. While the width of x is less than (n * w), perform step 9.

[0116] 9. Obtain the next symbol in the alternate-encoded sequence,convert it from base m to binary, and append the result to x.

[0117] 10. Split x into n elements, each w bits wide.

[0118] 11. In the decoded data, replace the alternate-encoded sequence(beginning with the reserved symbol 1240 and continuing through all thesymbols obtained in steps 3 through 9) with the symbols obtained in step10.

[0119] 12. Repeat step 3 beginning at the point in the decoded dataimmediately after the symbols that were replaced in step 11.

[0120]FIG. 15 is a flow diagram illustrating a method 1500 for creating916 a new reference identifier 730. The method 1500 begins 1502 byselecting 1504 a prefix 1132 and a desired length for a suffix 1134, andthen searching 1506 the reference database 120 for the most recentlyassigned, unexpired reference identifier 730 having the selected prefix1132 and a suffix 1134 having the desired length. In one embodiment, themost recently assigned, unexpired reference identifier 730 may have themost recent creation date 834 of those records 822 with expiration dates836 that have yet to occur.

[0121] If such a reference identifier 730 is found 1508, a new suffix1134 may be created 1510 by incrementing the suffix 1134 belonging tothe most recently assigned, unexpired reference identifier 730. Forexample, suppose the most recently assigned, unexpired referenceidentifier 730 has a suffix 1134 equal to the number 444. The new suffix1134 may then be equal to the number 445. Alternatively, suppose themost recently assigned, unexpired reference identifier 730 has a suffix1134 equal to the letter sequence aaa. The new suffix 1134 may then beequal to the letter sequence aab.

[0122] The method 1500 may then involve determining 1512 whether the newsuffix 1134 is valid. Suppose in step 1504 that the desired length forthe suffix 1134 is selected to be three. Both of the new suffixes 1134in the examples given above (the number 445 and the letter sequence aab)would be valid, because they both have a length of three. However,suppose the most recently assigned, unexpired reference identifier 730has a suffix 1134 equal to the number 999. The new suffix 1134 may thenbe equal to the number 1000. However, the number 1000 would not be avalid suffix 1134, because it has a length of four.

[0123] If it is determined 1512 that the new suffix 1134 is valid, thereference identifier 730 is made 1514 equal to the prefix 1132 selectedin step 1504 and the new suffix 1134 created in step 1510. The method1500 then ends 1516. If it is determined 1512 that the new suffix 1134is not valid, an alternate prefix 1132 or an alternate length for thesuffix 1134 may be selected 1518. The method 1500 may then return tostep 1506 and proceed as described above.

[0124] If an unexpired reference identifier 730 having the selectedprefix 1132 and a suffix 1134 having the desired length is not found1508, the method 1500 may then include searching 1520 for the oldestexpired reference identifier 730 having the selected prefix 1132 and asuffix 1134 having the desired length. In one embodiment, the oldestexpired reference identifier 730 may have the earliest creation date 834of those records 822 with expiration dates 836 that are in the past.

[0125] If an expired reference identifier 730 having the selected prefix1132 and a suffix 1134 having the desired length is found 1522, thereference identifier 730 may be made 1524 equal to the prefix 1132selected in step 1504 and the suffix 1134 from the oldest expiredreference identifier 730. The method 1500 may then end 1526.

[0126] If an expired reference identifier 730 having the selected prefix1132 and a suffix 1134 having the desired length is not found 1522, anew suffix 1134 having the desired length may be created 1528. Themethod 1500 may then end 1530.

[0127]FIG. 16 is a block diagram of an embodiment of a data structure1600 that may be used to store the reference database 820. The datastructure 1600 shown in FIG. 16 allows a reference identifier 730 to bestored in the reference database 120 without a terminating symbol 1242,i.e., a symbol 1242 that uniquely identifies the end of the referenceidentifier 730.

[0128] The data structure 1600 includes a parent node 1610 and aplurality of child nodes 1620. The child nodes 1620 are organized into Ngenerations 1630, where N is any positive integer. The parent node 1610includes one or more pointers 1640, one to each child node 1620 in the1st generation 1630 a.

[0129] Each child node 1620 (in a generation 1630 other than the Nthgeneration 1630 d) may include one or more pointers 1640 to a child node1620 in a higher-numbered generation 1630. For example, a child node1620 b in the 1st generation 1630 a may include a plurality of pointers1640 d-f to child nodes 1620 d-f in the 2nd generation 1630 b, a childnode 1620 e in the 2nd generation 1630 b may include a plurality ofpointers 1640 g-i to child nodes 1620 g-i in the 3rd generation 1630 c,and so forth.

[0130] One or more reference identifiers 730 may be stored within thedata structure 1600. For example, the prefix 1132 of a referenceidentifier 730 may be stored in a child data structure 1620 in the 1stgeneration 1630 a. The suffix 1134 of a reference identifier 730 may bestored in one or more child data structures 1620 in the 2nd generation1630 b through the Nth generation 1630 d. For example, the first symbol1242 in a suffix 1134 may be stored in a child data structure 1620 inthe 2nd generation 1630 b, the second symbol 1242 in a suffix 1134 maybe stored in a child data structure 1620 in the 3rd generation 1630 c,and so forth.

[0131] A child node 1620 that stores the last symbol 1242 in a suffix1134 may include one or more pointers 1640 to other information that maybe stored in a record 822 within the reference database 120. Forexample, the child node 1620 k in the Nth generation 1630 d may includea pointer 1640 m to data 832 associated with the reference identifier730, a pointer 1640 n to the creation date 834 of the referenceidentifier 730, and a pointer 1640 o to the expiration date 836 of thereference identifier 730.

[0132]FIG. 17 is a flow diagram of a method 1700 for associating 918 aportion 620 of source data 114 and a reference identifier 730. In theembodiment described in FIG. 17, associating 918 a portion 620 of sourcedata 114 and a reference identifier 730 involves storing the referenceidentifier 730 and the portion 620 of the source data 114 in a referencedatabase 120. The reference database 120 may be implemented using thedata structure 1600 illustrated in FIG. 16 and described in connectiontherewith.

[0133] The method 1700 begins 1702 by making 1704 the parent node 1610the current node and then searching 1706 for the prefix 1132 of thereference identifier 730 in the child nodes 1620 to which the parentnode 1610 points.

[0134] If the prefix 1132 is not found 1708, a new child node 1620 thatstores the prefix 1132 may be created 1710. The parent node 1610 maythen be made 1712 to point to the new child node 1620 created in step1710. The child node 1620 that stores the prefix 1132 may then be made1714 to be the current node. If in step 1708 the prefix 1132 is found inone of the child nodes 1620 to which the parent node 1610 points, themethod 1700 may proceed directly to step 1714.

[0135] The method 1700 may then determine 1716 whether there areadditional symbols 1242 in the suffix 1134 of the reference identifier730 to be stored. If it is determined 1716 that there are not additionalsymbols 1242 in the suffix 1134 of the reference identifier 730 to bestored, the current node may be made 1718 to point to the data 832associated with the reference identifier 730. The current node may bemade 1718 to point to other information as well, such as the creationdate 834 and/or the expiration date 836 of the reference identifier 730.The method 1700 may then end 1720.

[0136] If it is determined 1716 that there are additional symbols 1242in the suffix 1134 of the reference identifier 730 to be stored, thenext symbol 1242 in the suffix 1134 may be made 1722 to be the currentsymbol 1242. The method 1700 may then involve searching 1724 for thecurrent symbol 1242 in the child nodes 1620 to which the current nodepoints.

[0137] If the current symbol 1242 is not found 1726, a new child node1620 may be created 1728 that stores the current symbol 1242. Thecurrent node may be made to point 1730 to the new child node 1620. Themethod 1700 may then involve making 1732 the child node 1620 that storesthe current symbol 1242 the current node. The method 1700 may thenreturn to step 1716 and proceed as described above. If in step 1726 thecurrent symbol is found 1726 in the child nodes 1620 to which thecurrent node points, the method 1700 may proceed directly to step 1732.

[0138]FIG. 18 is a flow diagram of a method 1800 for retrieving 1012data 832 associated with a reference identifier 730. The method 1800begins 1802 by making 1804 the parent node 1610 the current node. Themethod 1800 may then involve identifying 1806 a prefix 1132 within thereference encoded source data 118. In one embodiment, this may involvesearching the reference encoded source data 118 for first and secondreserved symbols 1240 a-b from the reserved subset 1412. In such anembodiment, the prefix 1132 includes the first and second reservedsymbols 1240 a-b and the symbols 1242 positioned between the first andsecond reserved symbols 1240 a-b.

[0139] The method 1800 may then involve locating 1808 the child node1620 to which the current node points and that contains the prefix 1132found in the reference encoded source data 118. The node found in step1808 may then be made 1810 to be the current node. The method 1800 maythen involve locating 1812 the symbol 1242 in the reference encodedsource data 118 that follows the prefix 1132. The symbol 1242 found instep 1812 may then be made 1814 to be the current symbol 1242.

[0140] The method 1800 may then involve searching 1816 for the currentsymbol 1242 in the child nodes 1620 to which the current node points. Ifthe current symbol 1242 is not found 1818, this means that the end ofthe suffix 1134 has been reached. The method 1800 may then involveretrieving 1820 the data 832 (and/or other information) to which thecurrent node points. The method 1800 then ends 1822.

[0141] If the current symbol 1242 is found 1818 in one of the childnodes 1620 to which the current node points, the child node 1620 thatcontains the current symbol 1242 may be made 1824 to be the currentnode. The next symbol 1242 in the reference encoded source data 118 maythen be made 1826 to be the current symbol 1242. The method 1800 maythen return to step 1816 and proceed as described above.

[0142]FIG. 19 is a block diagram of an alternate embodiment of a system1900 for decoding machine-readable graphical codes. The system 1900shown in FIG. 19 is similar to the system 400 shown in FIG. 4 exceptthat the computing device 1910 additionally includes a referencedatabase cache 1912 in electronic communication with the referencedecoder 214. The cache 1912 may be implemented with any type of memorystructure that may be read from and written to by the reference decoder214.

[0143] As in FIG. 4, in the system 1900 shown in FIG. 19 the referencedatabase 120 is located on a server 410 that is in electroniccommunication with the computing device 1910 over a network 412. Thecache 1912 may be used to store records 822 from the reference database120 that are downloaded from the server 410.

[0144] Multiple reference databases 1912 may be located on the computingdevice 1910. The computing device 1910 may also include a referencedatabase list 1913 which is in electronic communication with thereference decoder 214. The reference database list 1913 may include alist of reference databases 1912 that should be accessed beforeattempting lookup over the server 410. The reference decoder 214 mayattempt lookup on the reference databases 1912 in the reference databaselist 1913 before attempting lookup on the server 410.

[0145] For example, a textbook may come with a supplementary CD thatstores example programs, multimedia presentations, and the like. Thetextbook may contain graphical codes 124 that invoke the content on theCD. To keep these graphical codes 124 small, they may include referenceidentifiers 730. The CD itself may include a reference database 1912which includes reference identifiers 730 and associated data 832. Whenthe CD is first inserted into the computing device 1910 (or when theCD's installer is invoked), the installer program may add the referencedatabase 1912 located on the CD to the reference database list 1913.Subsequently, when a graphical code 124 in the textbook is scanned, thelookup may first be tried in the reference database 1912 on the CD. Onlyif the reference identifier 730 is not found in the reference database1912 on the CD will lookup on the server 410 be performed.

[0146]FIG. 20 is a flow diagram of a method 2000 for locating 1010 areference database 120 that contains a reference identifier 730 found inthe reference encoded source data 118. The method 2000 begins 2002 bysearching 2004 for a reference identifier 730 in the records 822 of thereference database 120 that are stored in the cache 1912.

[0147] If the reference identifier 730 found in the reference encodedsource data 118 is not found 2006 in the records 822 of the referencedatabase 120 that are stored in the cache 1912, a server 410 that storesthe reference database 120 may be located 2008. The reference identifier730 may then be located 2010 in the reference database 120 stored on theserver 410. The record 822 containing the reference identifier 730 maythen be downloaded 2012 to the cache 1912. The data 832 (and possiblyother information) associated with the reference identifier 730 may thenbe retrieved 2014 from the record 822 stored in the cache 1912. Themethod 2000 may then end 2016.

[0148] If the reference identifier 730 found in the reference encodedsource data 118 is found 2006 in the records 822 of the referencedatabase 120 that are stored in the cache 1912, it may then bedetermined 2018 whether the record 822 in the cache 1912 that containsthe reference identifier 730 has expired. This may involve evaluatingthe expiration date 836 in the record 822 containing the referenceidentifier 730. If the reference identifier 730 in the cache 1912 hasexpired, the method 2000 may return to step 2010 and proceed asdescribed above. If the reference identifier 730 in the cache 1912 hasnot expired, the method 2000 may return to step 2014 and proceed asdescribed above.

[0149]FIG. 21 is a block diagram of an alternative embodiment of areference database 2120. As before, the reference database 2120 includesa plurality of records 822. In FIG. 21, however, the records 822 areorganized into groups 2130. Each group 2130 may include related records822. For example, a group 2130 may include records 822 containingreference identifiers 730 that may be used to create graphical codes 124that will be placed on the same page in a catalog, in the same magazinearticle, etc.

[0150]FIG. 22 is a flow diagram of an alternative method 2200 forlocating 1010 a reference database 120 that contains a referenceidentifier 730 found in the reference encoded source data 118. Themethod 2200 shown in FIG. 22 is similar to the method 2000 shown in FIG.20 except for the following. In the embodiment of the method 2200 shownin FIG. 22, once the reference identifier 730 found in the referenceencoded source data 118 is located 2010 in the reference database 120stored on the server 410, the entire group 2130 that includes the record822 containing the reference identifier 730 is downloaded 2012 to thecache 1912.

[0151] Downloading 2012 the group 2130 of records 822 to the cache 1912may not occur all at once. For example, the record 822 containing thereference identifier 730 found in the reference encoded source data 118may be first downloaded 2012 to the cache 1912. Then, the remainingrecords 822 in the same group 2130 may be subsequently downloaded 2012.This may reduce the latency associated with downloading 2012 the record822 containing the reference identifier 730 found in the referenceencoded source data 118.

[0152]FIG. 23 is a block diagram illustrating an alternative embodimentof a system 2300 for decoding machine-readable graphical codes. Thesystem 2300 shown in FIG. 23 is similar to the system 400 shown in FIG.4 except for the following. In the system 2300 shown in FIG. 23, thereference database 120 is located on a plurality of servers 410 a-c thatare each in electronic communication with the computing device 2310 overone or more networks 412. In addition, in FIG. 23 the computing device2310 includes a server database 2312 that stores information about theservers 410. The reference decoder 214 is in electronic communicationwith the server database 2312.

[0153]FIG. 24 is a block diagram of an embodiment of the server database2412. In one embodiment, an updated server database 2412 is periodicallydownloaded to the computing device 2310 from any one of the servers 410.The server database 2412 may include a plurality of records 2420. Eachrecord 2420 may include information about a server 410. For example,each record 2420 may include the address 2422 of a particular server410. The address 2422 may be an IP address, MAC address, etc.

[0154] Each record 2420 may also include the rank 2424 of a particularserver 410. The rank 2424 is a measure of when the reference decoder 214should contact the server 410 corresponding to the record 2420 relativeto other servers 410 in the server database 2412. For example, if aserver 410 has a rank 2424 of one, this may indicate that the referencedecoder 214 should attempt to contact that server 410 before attemptingto contact any other servers 410 in the server database 2412.

[0155] Each record 2420 may also include the availability 2426 of aparticular server 410. In one embodiment, the availability 2426 of aserver 410 may be either “available” or “not available.” Theavailability 2426 of each server 410 may be initially set to“available.” If the reference decoder 214 attempts to establishcommunication with a server 410 and fails, that server's 410availability 2426 may be set to “not available” for a set period oftime.

[0156]FIG. 25 is a flow diagram of a method 2500 for locating 1010 areference database 120 that contains a reference identifier 730identified in the reference encoded source data 118. The method 2500begins 2502 by attempting 2504 to establish contact with the server 410having the highest rank 2424. If it is determined 2506 that the server410 having the highest rank 2424 is available, the method 2500 may theninvolve preparing 2508 to retrieve data 832 (and possibly otherinformation) from the reference database 120 in the available server410. The method 2500 may then end 2510.

[0157] If it is determined 2506 that the server 410 having the highestrank 2424 is not available, the method 2500 may then involve flagging2512 that server as unavailable. In one embodiment, this may involvesetting the availability 2426 of a particular server 410 to “notavailable.” The method 2500 may then involve attempting 2514 toestablish contact with the server 410 having the next highest rank 2424.The method 2500 may then return to step 2506 and proceed as describedabove.

[0158]FIG. 26 is a block diagram of an alternative embodiment of sourcedata 2614 that may be generated by the data generator 112. Like thesource data 614 shown in FIG. 6, the source data 2614 shown in FIG. 26includes a first portion 620 a and a second portion 620 b. In addition,the embodiment of the source data 2614 shown in FIG. 26 includes anaccess control flag 2620. The access control flag 2620 indicates thataccess to the source data 2614 should be controlled. For example, thesource data 2614 may be a URL that references a web page. The accesscontrol flag 2620 may indicate that access to the web page should becontrolled.

[0159] The embodiment of the source data 2614 shown in FIG. 26 includesa source data identifier 2622. The source data identifier 2622 mayidentify the source data 2614 itself. The source data 2614 may beidentified uniquely or as belonging to a group.

[0160] Alternatively, the source data identifier 2622 may identify theprovider of the graphical code 124. In such an embodiment, the referencedecoder 214 may be configured to accept only access-controlled referenceencoded source data with certain source data identifiers 2622. This way,the reference decoder 214 may be configured so that the application 216will only receive source data 114 from trusted sources.

[0161]FIG. 27 is a block diagram of an embodiment of reference encodedsource data 2718. The reference encoder 116 may effect conversion of thesource data 2614 shown in FIG. 26 into the reference encoded source data2718 shown in FIG. 27. The reference encoded source data 2718 includesthe second portion 620 b of the source data 2614, and a referenceidentifier 730 in place of the first portion 620 a of the source data2614. The reference encoded source data 2718 shown in FIG. 27 alsoincludes the access control flag 2620 and the source data identifier2622. In alternative embodiments, the access control flag 2620 and/orthe source data identifier 2622 may be replaced in the reference encodedsource data 2718 by reference identifiers 730.

[0162]FIG. 28 is a block diagram of an embodiment of an alternativesystem 2800 for decoding machine-readable graphical codes. The system2800 shown in FIG. 28 is similar to the system 200 shown in FIG. 2except for the following. In the system 2800 shown in FIG. 28, thegraphical code reading device 212 is configured to read the graphicalcode 124 and convert it into user designated reference encoded sourcedata 2818. The reference decoder 214 is configured to receive the userdesignated reference encoded source data 2818 and convert it into userdesignated source data 2814. The user designated reference encodedsource data 2818 is similar to the embodiment of the reference encodedsource data 2718 shown in FIG. 27, and the user designated source data2814 is similar to the embodiment of the source data 2614 shown in FIG.26, except that the user designated reference encoded source data 2818and the user designated source data 2814 both include identifyinginformation about the user of the application 2816.

[0163] As in the system 200 shown in FIG. 2, a software application 2816may be running on the computing device 2810. In the system 2800 shown inFIG. 28, the application 2816 includes an access control module 2820 inelectronic communication with an access database 2822. The accesscontrol module 2820 is configured to control the application's 2816 useof the user designated source data 2814 by reference to authorizationinformation contained in the access database 2822. Specifically, theapplication 2816 may receive the user designated source data 2814 asinput. The user designated source data 2814 may include command datathat may be recognized by the application 2816 as a command to perform atask. By comparing the identifying information about the user of theapplication 2816 with authorization information contained in the accessdatabase 2822, the access control module 2820 may determine whether theuser of the application 2816 is authorized to effect performance of thetask corresponding to the command.

[0164] For example, the user designated source data 2814 may include aURL, which may be recognized by the application 2816 as a command todisplay a web page corresponding to the URL. By comparing theidentifying information about the user of the application 2816 with alist of authorized users in the access database 2822, the access controlmodule 2820 may determine whether the user of the graphical code readingdevice 212 is authorized to access the web page corresponding to theURL.

[0165] Of course, in alternative embodiments the reference database 120and/or the access database 2822 may be located on one or more servers410 that are in electronic communication with the computing device 2810over one or more networks 412.

[0166]FIG. 29 is a block diagram of an embodiment of the user designatedreference encoded source data 2918. The user designated referenceencoded source data 2918 shown in FIG. 29 is similar to the referenceencoded source data 2718 shown in FIG. 27, except that the userdesignated reference encoded source data 2918 shown in FIG. 29 alsoincludes a user identifier 2920. The user identifier 2920 identifies theuser of the application 2816. In one embodiment, the user identifier2920 may uniquely identify the device that generated the user designatedreference encoded source data 2918. For example, in the system 2800shown in FIG. 28, the user identifier 2920 may uniquely identify thegraphical code reading device 212. Alternatively, the user identifier2920 may uniquely identify the computing device 2810. Alternativelystill, the user identifier 2920 may be the user identifier 2920 thatallows a user to log on to the computing device 2810 and/or theapplication 2816. Those skilled in the art will recognize numerousalternative configurations for the user identifier 2920 in light of theteachings contained herein.

[0167] The user identifier 2920 is typically inserted into the userdesignated reference encoded source data 2918 by the graphical codereading device 212 or the reference decoder 214. In one embodiment, thereference encoded source data 2718 includes one or more replaceable tags(not shown) for identifying the user. Upon detection of the accesscontrol flag 2620, the graphical code reading device 212 or referencedecoder 214 may replace these tags with the corresponding useridentifiers 2920. For example, the tag <insert-scanner-id> may bereplaced with the serial number of the graphical code reading device212.

[0168]FIG. 30 is a block diagram of an embodiment of the user designatedsource data 3014. The embodiment of the user designated source data 3014shown in FIG. 30 is similar to the embodiment of the source data 2614shown in FIG. 26, except that the embodiment of the user designatedsource data 3014 shown in FIG. 30 also includes a user identifier 2920.As described previously, the user identifier 2920 identifies the user ofthe application 2816.

[0169]FIG. 31 is a block diagram of an embodiment of the access database3122. The access database 3122 may include a plurality of records 3130.Each record 3130 may include a source data identifier 2622. Each record3130 may also include a user list 3132 which includes one or more useridentifiers 2920. Each user identifier 2920 may correspond to aparticular user that is authorized to access the source data 2614 thatcorresponds to the source data identifier 2622. For example, the sourcedata identifier 2622 may correspond to a URL. The user identifiers 2920in the user list 3132 may correspond to the users that are authorized toaccess the web page corresponding to the URL.

[0170]FIG. 32 is a flow diagram of a method 3200 for controlling use ofthe user designated source data 2814. The method 3200 begins 3202 bydetermining 3204 whether the user designated source data 2814 is accesscontrolled. In one embodiment, this may involve determining whether theuser designated source data 2814 includes an access control flag 2620.As stated previously, the user designated source data 2814 may includecommand data that may be recognized by the application 2816 as a commandto perform one or more tasks. If it is determined 3204 that the userdesignated source data 2814 is not access controlled, the userdesignated source data 2814 may be used 3206 to perform the taskcorresponding to the command. The method 3200 may then end 3208.

[0171] If it is determined 3204 that the user designated source data2814 is access controlled, the method may then involve searching 3210for a user identifier 2920 in the access database 2822. If the useridentifier 2920 is found 3212 in the access database 2822, the method3200 may return to step 3206 and proceed as described above. If the useridentifier 2920 is not found 3212 in the access database 2822, themethod 3200 may end 3214 without performing the task corresponding tothe command contained in the user designated source data 2814.

[0172] In an alternative embodiment, if the user identifier 2920 isfound 3212 in the access database 2822, step 3206 may also includestoring authorization information in a local cache 1912. One or morerecords 3130 from the access database 3122 may be stored in the cache1912. Specifically, the cache 1912 may include user identifiers 2920associated with a source data identifier 2622, as well as the relevantauthorization periods. In such an embodiment, step 3210 may firstinvolve querying the records 3130 of the access database 3122 stored inthe local cache 1912. The cache 1912 is preferably encrypted or signedto prevent the user from modifying the cache.

[0173] In another alternative embodiment, the access database 3122 maysimply include a list of source data identifiers 2622, without a userlist 3132. The source data identifiers 2622 in the access database 3122may identify the information sources who are authorized to providesource data 114 to the application 216 (or, alternatively, who are notauthorized to do so). In such an embodiment, step 3210 may simplyinvolve searching for a specific source data identifier 2622 in theaccess database 3122.

[0174]FIG. 33 is a block diagram of an alternative embodiment of asystem 3300 for decoding machine-readable graphical codes. The system3300 shown in Figure is 33 similar to the system 400 shown in FIG. 4except for the following.

[0175] In the embodiment shown in FIG. 33, the source data 114 used tocreate the graphical code 124 is a URL. Thus, the graphical code readingdevice 212 is configured to read the graphical code 124 and convert itinto a reference encoded URL 3318.

[0176] The computing device 3310 includes the reference decoder 214. Thereference decoder 214 is in electronic communication with a web browser3316. The web browser 3316 is in electronic communication with a dynamicweb server 3311 over the Internet 3312 through a firewall 3330. Thefirewall 3330 prevents unauthorized users from accessing the dynamic webserver 3311. Authorization may be established through, for example, auser name and password. Typically, the web browser 3316 is in possessionof the user name and password for the firewall 3330.

[0177] The reference decoder 214 accepts the reference encoded URL 3318and effects conversion of the reference encoded URL 3318 into a URL. Inthe embodiment shown in FIG. 33, effecting conversion of the referenceencoded URL 3318 into a URL involves sending the reference encoded URL3318 to the web browser 3316. The web browser 3316 includes thereference encoded URL 3318 as part of a file request 3332 that is sentto the dynamic web server 3310. The file request 3332 may be a HTTPrequest.

[0178] The dynamic web server 3310 includes the reference decoder 214and the reference database 120. By accessing information in thereference database 120, the reference decoder 214 converts the referenceencoded URL 3318 contained in the file request 3332 into a URL. Thedynamic web server 3310 sends the URL back to the web browser 3316 aspart of a redirect web file 3334. The redirect web file 3334 may be anHTML file. After the web browser 3316 receives the redirect web file3334, the redirect web file 3334 redirects the web browser 3316 to theweb page that corresponds to the URL.

[0179]FIG. 34 is a block diagram of an embodiment of a file request3432. The file request 3432 includes a reference encoded URL 3318. Inone embodiment, the file request 3432 may be an HTTP request, and thereference encoded URL 3318 may be part of a query string containedwithin the HTTP request.

[0180]FIG. 35 is a block diagram of an embodiment of a redirect web file3534. The redirect web file 3534 may be an HTML file. The redirect webfile 3534 or its header includes a redirect or refresh tag 3520, whichincludes a URL 3514. As stated previously, the reference decoder 214converts the reference encoded URL 3318 in the file request 3332 intothe URL 3514. The redirect or refresh tag 3520 causes the web browser3316 to access the web page corresponding to the URL 3514.

[0181]FIG. 36 is a block diagram of hardware components that may be usedin an embodiment of a computing device 3610. As explained previously, inone embodiment the computing device 3610 is used in combination with thegraphical code reading device 212 to read the graphical code 124. Insuch an embodiment, the computing device 3610 communicates with thegraphical code reading device 212 through the reading device interface3612. The reading device interface 3612 may be a standard communicationsport typically found on a computing device 3610, or it may be aspecialized interface card provided along with the graphical codereading device 212.

[0182] Many different types of computer systems may be used to implementthe computing device 3610 illustrated herein. The diagram of FIG. 36illustrates typical components of a computing device 3610 including aprocessor 3614, memory 3616, a storage device 3618, an input device3620, and an output device 3622.

[0183] One or more communication ports 3624 may also be included in thecomputing device 3610. It will be appreciated by those skilled in theart that more components may be included in the computing device 3610.For example, several input devices 3620 may be included, such as akeyboard, a mouse, a joystick, a touch screen, etc. In addition, severaloutput devices 3622 may be included such as a monitor, speakers, aprinter, etc. Thus, those skilled in the art will appreciate thatadditional components may be added to the computing device 3610 withoutdetracting from the functionality to serve as a computing device.

[0184] The computing device 3610 may be a conventional desktop computer.Desktop computers are commercially available. However, it will beappreciated by those skilled in the art that the computing device 3610is a broadly defined digital computer. A computing device 3610, as usedherein, is any device that includes a digital processor capable ofreceiving and processing data. A computing device 3610 includes thebroad range of digital computers including microcontrollers, handheldcomputers, personal computers, servers, mainframes, supercomputers, andany variation or related device thereof. In current design, thecomputing device 3610 is typically an IBM-compatible personal computerrunning the Linux or Microsoft Windows 95/98/2000 or NT operatingsystem. Of course, other types of computers with different operatingsystems may be used. For example, an Apple computer or a UNIXworkstation may be used as the computing device 3610.

[0185] While specific embodiments and applications of the presentinvention have been illustrated and described, it is to be understoodthat the invention is not limited to the precise configuration andcomponents disclosed herein. Various modifications, changes, andvariations which will be apparent to those skilled in the art may bemade in the arrangement, operation, and details of the methods andsystems of the present invention disclosed herein without departing fromthe spirit and scope of the invention.

What is claimed is:
 1. A method for encoding machine-readable graphicalcodes, comprising: receiving source data, the source data comprising afirst portion and a second portion; effecting conversion of the sourcedata into reference encoded source data, the reference encoded sourcedata comprising a first reference identifier in place of the firstportion, the reference encoded source data also comprising the secondportion; and sending the reference encoded source data to a graphicalcode generator that is configured to convert the reference encodedsource data into a graphical code.
 2. The method of claim 1, wherein thefirst reference identifier is shorter in length than the first portion.3. The method of claim 1, wherein effecting conversion of the sourcedata into the reference encoded source data comprises: obtaining thefirst reference identifier, associating the first portion of the sourcedata with the first reference identifier.
 4. The method of claim 1,wherein the first reference identifier does not include a terminatingsymbol.
 5. The method of claim 3, wherein associating the first portionof the source data with the first reference identifier comprises storingthe first portion of the source data and the first reference identifierin a reference database.
 6. The method of claim 5, wherein obtaining thefirst reference identifier comprises creating the first referenceidentifier.
 7. The method of claim 6, wherein the first referenceidentifier comprises a prefix and a suffix, and wherein creating thefirst reference identifier comprises: locating a previously assignedreference identifier in the reference database, the previously assignedreference identifier comprising the prefix and a previously assignedsuffix; and forming the suffix by incrementing the previously assignedsuffix.
 8. The method of claim 5, wherein the first reference identifiercomprises a prefix and a suffix, and wherein obtaining the firstreference identifier comprises locating an expired reference identifierin the reference database, the expired reference identifier comprisingthe prefix and the suffix.
 9. The method of claim 1, wherein the sourcedata comprises a URL.
 10. A method for decoding machine-readablegraphical codes, comprising: receiving reference encoded source data,the reference encoded source data comprising a first referenceidentifier and a second portion; effecting conversion of the referenceencoded source data into source data, the source data comprising firstaffiliated data in place of the first reference identifier, the sourcedata further comprising the second portion; and making the source dataavailable to a software application.
 11. The method of claim 10, whereinthe first reference identifier is shorter in length than the firstaffiliated data.
 12. The method of claim 10, wherein effectingconversion of the reference encoded source data into source datacomprises: locating a reference database that contains the firstreference identifier and the first affiliated data; and retrieving thefirst affiliated data from the reference database.
 13. The method ofclaim 12, wherein the first reference identifier and the firstaffiliated data are associated with a cache period.
 14. The method ofclaim 12, wherein locating the reference database comprises: looking forthe first reference identifier and the first affiliated data in a firstreference database; and locating the first reference identifier and thefirst affiliated data in a second reference database.
 15. The method ofclaim 12, wherein the first affiliated data is dynamically changeable.16. The method of claim 10, wherein the first reference identifier doesnot include a terminating symbol.
 17. The method of claim 12, whereinthe reference database is stored on a server, and wherein locating thereference database comprises establishing communication with the serverover a network.
 18. The method of claim 12, wherein the referencedatabase is stored on a first server and on a second server, and whereinlocating the reference database comprises: attempting to establishcommunication with the first server over a network; and establishingcommunication with the second server over the network.
 19. The method ofclaim 17, wherein the first reference identifier and the firstaffiliated data are stored in a first record in the reference database,and wherein retrieving the first affiliated data from the referencedatabase comprises downloading the first record from the server.
 20. Themethod of claim 19, further comprising associating an expiration datewith the first record.
 21. The method of claim 19, wherein the referencedatabase further comprises a second record, the second record comprisinga second reference identifier and second affiliated data, the secondaffiliated data being associated with the second reference identifier,and wherein retrieving the first affiliated data from the referencedatabase further comprises downloading the second record from theserver.
 22. The method of claim 10, wherein the source data comprisescommand data recognizable by the software application as a command toperform a task, and further comprising determining whether a user of thesoftware application is authorized to effect performance of the task.23. The method of claim 22, wherein determining whether the user isauthorized to effect performance of the task comprises accessing anauthorization database, the authorization database comprising a sourceidentifier that identifies the task, the authorization database furthercomprising a plurality of user identifiers associated with the sourceidentifier.
 24. The method of claim 23, wherein the authorizationdatabase is stored on a server, and wherein accessing the authorizationdatabase comprises establishing communication with the server over anetwork.
 25. The method of claim 24, wherein determining whether theuser is authorized to effect performance of the task further comprisesdownloading authorization information about the user from theauthorization database, the authorization information comprising anauthorization period for the user.
 26. The method of claim 23, whereinthe authorization database is stored on a first server and on a secondserver, and wherein accessing the authorization database comprises:attempting to establish communication with the first server over anetwork; and establishing communication with the second server over thenetwork.
 27. The method of claim 10, further comprising determiningwhether a provider of the source data is authorized to provide sourcedata to the application.
 28. The method of claim 27, wherein determiningwhether a provider of the source data is authorized to provide sourcedata to the application comprises accessing an authorization database,the authorization database comprising a plurality of provideridentifiers.
 29. The method of claim 28, wherein each of the pluralityof provider identifiers identifies an authorized provider of sourcedata.
 30. The method of claim 28, wherein each of the plurality ofprovider identifiers identifies an unauthorized provider of source data.31. The method of claim 10, wherein the reference encoded source datacomprises a reference encoded URL, wherein the source data comprises aURL, wherein the software application comprises a web browser, andwherein effecting conversion of the reference encoded URL into the URLcomprises: sending the reference encoded URL to a dynamic web server aspart of a file request; and receiving a web file from the dynamic webserver, the web file comprising the URL, the web file further comprisinga refresh tag which causes the web browser to access a web pagecorresponding to the URL.
 32. The method of claim 10, wherein thereference encoded source data further comprises a substitution tag, andfurther comprising substituting dynamic data for the substitution tag.33. The method of claim 32, wherein the dynamic data comprises a useridentifier.
 34. The method of claim 32, wherein the dynamic datacomprises a serial number of a graphical code reading device.
 35. Themethod of claim 32, wherein the dynamic data comprises a resolution of adisplay screen.
 36. The method of claim 32, wherein the dynamic datacomprises an operating system identifier.
 37. The method of claim 32,wherein the dynamic data comprises a CD drive designation.
 38. A systemfor encoding machine-readable graphical codes, comprising: a datagenerator interface configured to obtain source data from a datagenerator, the source data comprising a first portion and a secondportion; a computing device configured for electronic communication withthe data generator, the computing device comprising: a processor; amemory in electronic communication with the processor; a referenceencoder configured to effect conversion of the source data intoreference encoded source data, the reference encoded source datacomprising a first reference identifier in place of the first portion,the reference encoded source data also comprising the second portion;and a graphical code generator configured to convert the referenceencoded source data into a graphical code.
 39. The system of claim 38,wherein the first reference identifier is shorter in length than thefirst portion.
 40. The system of claim 38, wherein the reference encodereffects conversion of the source data into reference encoded source databy: obtaining the first reference identifier; and associating the firstportion of the source data with the first reference identifier.
 41. Thesystem of claim 38, wherein the first reference identifier does notinclude a terminating symbol.
 42. The system of claim 40, whereinassociating the first portion of the source data with the firstreference identifier comprises storing the first portion of the sourcedata and the first reference identifier in a reference database.
 43. Thesystem of claim 42, wherein obtaining the first reference identifiercomprises creating the first reference identifier.
 44. The system ofclaim 43, wherein the first reference identifier comprises a prefix anda suffix, and wherein creating the first reference identifier comprises:locating a previously assigned reference identifier in the referencedatabase, the previously assigned reference identifier comprising theprefix and a previously assigned suffix; and forming the suffix byincrementing the previously assigned suffix.
 45. The system of claim 42,wherein the first reference identifier comprises a prefix and a suffix,and wherein obtaining the first reference identifier comprises locatingan expired reference identifier in the reference database, the expiredreference identifier comprising the prefix and the suffix.
 46. Thesystem of claim 38, wherein the source data comprises a URL.
 47. Asystem for decoding machine-readable graphical codes, comprising: agraphical code reading device configured to read a graphical code andgenerate reference encoded source data, the reference encoded sourcedata comprising a first reference identifier and a second portion; and acomputing device in electronic communication with the graphical codereading device, the computing device comprising: a processor; a memoryin electronic communication with the processor; a communications port inelectronic communication with the processor for communicating with thegraphical code reading device; a reference decoder configured to effectconversion of the reference encoded source data into source data, thesource data comprising first affiliated data in place of the firstreference identifier, the source data further comprising the secondportion; and a software application configured to use the source data.48. The method of claim 47, wherein the first reference identifier isshorter in length than the first affiliated data.
 49. The system ofclaim 47, wherein the reference decoder effects conversion of thereference encoded source data into source data by: locating a referencedatabase that contains the first reference identifier and the firstaffiliated data; and retrieving the first affiliated data from thereference database.
 50. The system of claim 49, wherein the firstreference identifier and the first affiliated data are associated with acache period.
 51. The system of claim 49, wherein locating the referencedatabase comprises: looking for the first reference identifier and thefirst affiliated data in a first reference database; and locating thefirst reference identifier and the first affiliated data in a secondreference database.
 52. The system of claim 49, wherein the firstaffiliated data is dynamically changeable.
 53. The system of claim 47,wherein the first reference identifier does not include a terminatingsymbol.
 54. The system of claim 49, wherein the reference database isstored on a server, and wherein locating the reference databasecomprises establishing communication with the server over a network. 55.The system of claim 49, wherein the reference database is stored on afirst server and on a second server, and wherein locating the referencedatabase comprises: attempting to establish communication with the firstserver over a network; and establishing communication with the secondserver over the network.
 56. The system of claim 54, wherein the firstreference identifier and the first affiliated data are stored in a firstrecord in the reference database, and wherein retrieving the firstaffiliated data from the reference database comprises downloading thefirst record from the server.
 57. The system of claim 56, wherein thereference decoder is further configured to associate an expiration datewith the first record.
 58. The system of claim 49, wherein the referencedatabase is stored on a first server and on a second server, and whereinlocating the reference database comprises: attempting to establishcommunication with the first server over a network; and establishingcommunication with the second server over the network.
 59. The system ofclaim 54, wherein the computing device further comprises a cache inelectronic communication with the reference decoder, wherein the firstreference identifier and the first affiliated data are stored in a firstrecord in the reference database, and wherein retrieving the firstaffiliated data from the reference database comprises downloading thefirst record from the server and storing the first record in the cache.60. The system of claim 59, wherein the reference database furthercomprises a second record, the second record comprising a secondreference identifier and second affiliated data, the second affiliateddata being associated with the second reference identifier, and whereinretrieving the first affiliated data from the reference database furthercomprises downloading the second record from the server and storing thesecond record in the cache.
 61. The system of claim 47, wherein thesource data comprises command data recognizable by the softwareapplication as a command to perform a task, and further comprising anaccess control module configured to determine whether a user of thesoftware application is authorized to effect performance of the task.62. The system of claim 61, wherein determining whether the user isauthorized to effect performance of the task comprises accessing anauthorization database, the authorization database comprising a sourceidentifier that identifies the task, the authorization database furthercomprising a plurality of user identifiers associated with the sourceidentifier.
 63. The system of claim 62, wherein the authorizationdatabase is stored on a server, and wherein accessing the authorizationdatabase comprises establishing communication with the server over anetwork.
 64. The system of claim 63, wherein determining whether theuser is authorized to effect performance of the task further comprisesdownloading authorization information about the user from theauthorization database, the authorization information comprising anauthorization period for the user.
 65. The system of claim 62, whereinthe authorization database is stored on a first server and on a secondserver, and wherein accessing the authorization database comprises:attempting to establish communication with the first server over anetwork; and establishing communication with the second server over thenetwork.
 66. The system of claim 47, wherein the reference decoder isfurther configured to determine whether a provider of the source data isauthorized to provide source data to the application.
 67. The system ofclaim 66, wherein determining whether a provider of the source data isauthorized to provide source data to the application comprises accessingan authorization database, the authorization database comprising aplurality of provider identifiers.
 68. The system of claim 67, whereineach of the plurality of provider identifiers identifies an authorizedprovider of source data.
 69. The system of claim 67, wherein each of theplurality of provider identifiers identifies an unauthorized provider ofsource data.
 70. The system of claim 47, wherein the reference encodedsource data comprises a reference encoded URL, wherein the source datacomprises a URL, wherein the software application comprises a webbrowser, and wherein the reference decoder effects conversion of thereference encoded URL into the URL by sending the reference encoded URLto the web browser, the web browser being configured to: send thereference encoded URL to a dynamic web server as part of a file request;and receive a web file from the dynamic web server, the web filecomprising the URL, the web file further comprising a refresh tag whichcauses the web browser to access a web page corresponding to the URL.71. The system of claim 47, wherein the reference decoder is containedwithin the graphical code reading device.
 72. The system of claim 47,wherein the reference encoded source data further comprises asubstitution tag, and wherein the computing device is configured tosubstitute dynamic data for the substitution tag.
 73. The system ofclaim 72, wherein the dynamic data comprises a user identifier.
 74. Thesystem of claim 72, wherein the dynamic data comprises a serial numberof a graphical code reading device.
 75. The system of claim 72, whereinthe dynamic data comprises a resolution of a display screen.
 76. Thesystem of claim 72, wherein the dynamic data comprises an operatingsystem identifier.
 77. The system of claim 72, wherein the dynamic datacomprises a CD drive designation.
 78. A computer-readable medium forstoring program data, wherein the program data comprises executableinstructions for implementing a method comprising: receiving sourcedata, the source data comprising a first portion and a second portion;effecting conversion of the source data into reference encoded sourcedata, the reference encoded source data comprising a first referenceidentifier in place of the first portion, the reference encoded sourcedata also comprising the second portion; and sending the referenceencoded source data to a graphical code generator that is configured toconvert the reference encoded source data into a graphical code.
 79. Themethod of claim 78, wherein the first reference identifier is shorter inlength than the first portion.
 80. The medium of claim 78, whereineffecting conversion of the source data into the reference encodedsource data comprises: obtaining the first reference identifier,associating the first portion of the source data with the firstreference identifier.
 81. The medium of claim 78, wherein the firstreference identifier does not include a terminating symbol.
 82. Themedium of claim 80, wherein associating the first portion of the sourcedata with the first reference identifier comprises storing the firstportion of the source data and the first reference identifier in areference database.
 83. The medium of claim 82, wherein obtaining thefirst reference identifier comprises creating the first referenceidentifier.
 84. The medium of claim 83, wherein the first referenceidentifier comprises a prefix and a suffix, and wherein creating thefirst reference identifier comprises: locating a previously assignedreference identifier in the reference database, the previously assignedreference identifier comprising the prefix and a previously assignedsuffix; and forming the suffix by incrementing the previously assignedsuffix.
 85. The medium of claim 80, wherein the first referenceidentifier comprises a prefix and a suffix, and wherein obtaining thefirst reference identifier comprises locating an expired referenceidentifier in the reference database, the expired reference identifiercomprising the prefix and the suffix.
 86. The medium of claim 78,wherein the source data comprises a URL.
 87. A computer-readable mediumfor storing program data, wherein the program data comprises executableinstructions for implementing a method comprising: receiving referenceencoded source data, the reference encoded source data comprising afirst reference identifier and a second portion; effecting conversion ofthe reference encoded source data into source data, the source datacomprising first affiliated data in place of the first referenceidentifier, the source data further comprising the second portion; andmaking the source data available to a software application.
 88. Themethod of claim 87, wherein the first reference identifier is shorter inlength than the first affiliated data.
 89. The medium of claim 87,wherein effecting conversion of the reference encoded source data intosource data comprises: locating a reference database that contains thefirst reference identifier and the first affiliated data; and retrievingthe first affiliated data from the reference database.
 90. The medium ofclaim 89, wherein the first reference identifier and the firstaffiliated data are associated with a cache period.
 91. The medium ofclaim 89, wherein locating the reference database comprises: looking forthe first reference identifier and the first affiliated data in a firstreference database; and locating the first reference identifier and thefirst affiliated data in a second reference database.
 92. The medium ofclaim 89, wherein the first affiliated data is dynamically changeable.93. The medium of claim 87, wherein the first reference identifier doesnot include a terminating symbol.
 94. The medium of claim 89, whereinthe reference database is stored on a server, and wherein locating thereference database comprises establishing communication with the serverover a network.
 95. The medium of claim 89, wherein the referencedatabase is stored on a first server and on a second server, and whereinlocating the reference database comprises: attempting to establishcommunication with the first server over a network; and establishingcommunication with the second server over the network.
 96. The medium ofclaim 94, wherein the first reference identifier and the firstaffiliated data are stored in a first record in the reference database,and wherein retrieving the first affiliated data from the referencedatabase comprises downloading the first record from the server.
 97. Themedium of claim 96, further comprising associating an expiration datewith the first record.
 98. The medium of claim 94, wherein the firstreference identifier and the first affiliated data are stored in a firstrecord in the reference database, and wherein retrieving the firstaffiliated data from the reference database comprises downloading thefirst record from the server.
 99. The medium of claim 98, wherein thereference database further comprises a second record, the second recordcomprising a second reference identifier and second affiliated data, thesecond affiliated data being associated with the second referenceidentifier, and wherein retrieving the first affiliated data from thereference database further comprises downloading the second record fromthe server.
 100. The medium of claim 87, wherein the source datacomprises command data recognizable by the software application as acommand to perform a task, and further comprising determining whether auser of the software application is authorized to effect performance ofthe task.
 101. The medium of claim 100, wherein determining whether theuser is authorized to effect performance of the task comprises accessingan authorization database, the authorization database comprising asource identifier that identifies the task, the authorization databasefurther comprising a plurality of user identifiers associated with thesource identifier.
 102. The medium of claim 101, wherein theauthorization database is stored on a server, and wherein accessing theauthorization database comprises establishing communication with theserver over a network.
 103. The medium of claim 102, wherein determiningwhether the user is authorized to effect performance of the task furthercomprises downloading authorization information about the user from theauthorization database, the authorization information comprising anauthorization period for the user.
 104. The medium of claim 101, whereinthe authorization database is stored on a first server and on a secondserver, and wherein accessing the authorization database comprises:attempting to establish communication with the first server over anetwork; and establishing communication with the second server over thenetwork.
 105. The medium of claim 87, further comprising determiningwhether a provider of the source data is authorized to provide sourcedata to the application.
 106. The medium of claim 105, whereindetermining whether a provider of the source data is authorized toprovide source data to the application comprises accessing anauthorization database, the authorization database comprising aplurality of provider identifiers.
 107. The medium of claim 106, whereineach of the plurality of provider identifiers identifies an authorizedprovider of source data.
 108. The medium of claim 106, wherein each ofthe plurality of provider identifiers identifies an unauthorizedprovider of source data.
 109. The medium of claim 87, wherein thereference encoded source data comprises a reference encoded URL, whereinthe source data comprises a URL, wherein the software applicationcomprises a web browser, and wherein effecting conversion of thereference encoded URL into the URL comprises: sending the referenceencoded URL to a dynamic web server as part of a file request; andreceiving a web file from the dynamic web server, the web filecomprising the URL, the web file further comprising a refresh tag whichcauses the web browser to access a web page corresponding to the URL.110. The medium of claim 87, wherein the reference encoded source datafurther comprises a substitution tag, and further comprisingsubstituting dynamic data for the substitution tag.
 111. The medium ofclaim 110, wherein the dynamic data comprises a user identifier. 112.The medium of claim 110, wherein the dynamic data comprises a serialnumber of a graphical code reading device.
 113. The medium of claim 110,wherein the dynamic data comprises a resolution of a display screen.114. The medium of claim 110, wherein the dynamic data comprises anoperating system identifier.
 115. The medium of claim 110, wherein thedynamic data comprises a CD drive designation.
 116. A method forencoding source data into reference encoded source data that may beconverted by a graphical code generator into a machine-readablegraphical code, comprising: receiving the source data, the source datacomprising a first portion and an unrecognizable second portion that thegraphical code generator cannot recognize; converting the source datainto reference encoded source data by: replacing the first portion witha reference identifier; and replacing the unrecognizable second portionwith an encoded second portion; sending the reference encoded sourcedata to the graphical code generator.
 117. The method of claim 116,wherein the graphical code generator is configured to recognize symbolsfrom a symbol set, wherein the symbol set comprises a plurality ofreserved symbols, wherein the unrecognizable second portion comprises agroup of data elements, and wherein replacing the unrecognizable secondportion with the encoded second portion comprises: creating padded dataelements by padding each data element in the group to a predeterminedwidth of binary digits by adding leading zeroes; concatenating thepadded data elements into a single string of binary digits; dividing thestring of binary digits into symbols from the symbol set to form asymbol sequence; prepending one of the reserved symbols from the symbolset to the symbol sequence to form a prepended symbol sequence; andreplacing the unrecognizable second portion with the prepended symbolsequence.
 118. The method of claim 116, wherein the graphical codegenerator is configured to recognize symbols from a symbol set, whereinthe symbol set comprises a plurality of reserved symbols, wherein theunrecognizable second portion comprises a group of data elements, andwherein replacing the unrecognizable second portion with the encodedsecond portion comprises: creating padded data elements by padding eachdata element in the group to a predetermined width of binary digits byadding leading zeroes; forming a binary number, the binary numberindicating the number of data elements in the group, the binary numberhaving the predetermined width; concatenating the binary number and thepadded data elements into a single string of binary digits; dividing thestring of binary digits into symbols from the symbol set to form asymbol sequence; prepending one of the reserved symbols from the symbolset to the symbol sequence to form a prepended symbol sequence; andreplacing the unrecognizable second portion with the prepended symbolsequence.
 119. A method for decoding a machine-readable graphical code,comprising: scanning a machine-readable graphical code to createreference encoded source data, the reference encoded source datacomprising a reference identifier and an encoded second portion;converting the reference encoded source data into source data by:replacing the reference identifier with first affiliated data; andreplacing the encoded second portion with an unrecognizable secondportion, the unrecognizable second portion being unrecognizable to agraphical code generator used to create the machine-readable graphicalcode; providing the source data to the software application.
 120. Themethod of claim 119, wherein the encoded second portion comprises aplurality of encoded symbols from a symbol set that may be recognized bythe graphical code generator, and wherein replacing the encoded secondportion with an unrecognizable second portion comprises: locating afirst reserved symbol in the reference encoded source data, the firstreserved symbol indicating a beginning of the encoded second portion;and decoding each encoded symbol in the encoded second portion.
 121. Themethod of claim 119, wherein the encoded second portion comprises aplurality of encoded symbols from a symbol set that may be recognized bythe graphical code generator, and wherein replacing the encoded secondportion with an unrecognizable second portion comprises: locating afirst reserved symbol in the reference encoded source data, the firstreserved symbol indicating a beginning of the encoded second portion;locating a first width identifier in the reference encoded source data,the first width identifier indicating the number of encoded symbols inthe encoded second portion; and decoding a number of encoded symbols inthe encoded second portion, the number being equal to the first widthidentifier.
 122. A system for encoding source data into referenceencoded source data that may be converted by a graphical code generatorinto a machine-readable graphical code, comprising: a data generatorinterface configured to obtain the source data from a data generator,the source data comprising a first portion and an unrecognizable secondportion that the graphical code generator cannot recognize; and acomputing device configured for electronic communication with the datagenerator, the computing device comprising: a processor; a memory inelectronic communication with the processor; and a reference encoderconfigured to convert the source data into reference encoded source databy replacing the first portion with a reference identifier and replacingthe unrecognizable second portion with an encoded second portion; andsend the reference encoded source data to the graphical code generator,the graphical code generator being configured to convert the referenceencoded source data into a graphical code.
 123. The system of claim 122,wherein the graphical code generator is configured to recognize symbolsfrom a symbol set, wherein the symbol set comprises a plurality ofreserved symbols, wherein the unrecognizable second portion comprises agroup of data elements, and wherein replacing the unrecognizable secondportion with the encoded second portion comprises: creating padded dataelements by padding each data element in the group to a predeterminedwidth of binary digits by adding leading zeroes; concatenating thepadded data elements into a single string of binary digits; dividing thestring of binary digits into symbols from the symbol set to form asymbol sequence; prepending one of the reserved symbols from the symbolset to the symbol sequence to form a prepended symbol sequence; andreplacing the unrecognizable second portion with the prepended symbolsequence.
 124. The system of claim 122, wherein the graphical codegenerator is configured to recognize symbols from a symbol set, whereinthe symbol set comprises a plurality of reserved symbols, wherein theunrecognizable second portion comprises a group of data elements, andwherein replacing the unrecognizable second portion with the encodedsecond portion comprises: creating padded data elements by padding eachdata element in the group to a predetermined width of binary digits byadding leading zeroes; forming a binary number, the binary numberindicating the number of data elements in the group, the binary numberhaving the predetermined width; concatenating the binary number and thepadded data elements into a single string of binary digits; dividing thestring of binary digits into symbols from the symbol set to form asymbol sequence; prepending one of the reserved symbols from the symbolset to the symbol sequence to form a prepended symbol sequence; andreplacing the unrecognizable second portion with the prepended symbolsequence.
 125. A system for decoding a machine-readable graphical code,comprising: a graphical code reading device configured to scan amachine-readable graphical code to create reference encoded source data,the reference encoded source data comprising a reference identifier andan encoded second portion; and a computing device in electroniccommunication with the graphical code reading device, the computingdevice comprising: a processor; a memory in electronic communicationwith the processor; a communications port in electronic communicationwith the processor for communicating with the graphical code readingdevice; a reference decoder configured to convert the reference encodedsource data into source data by replacing the reference identifier withfirst affiliated data and replacing the encoded second portion with anunrecognizable second portion, the unrecognizable second portion beingunrecognizable to a graphical code generator used to create themachine-readable graphical code; and a software application configuredto receive the source data from the reference decoder.
 126. The systemof claim 125, wherein the encoded second portion comprises a pluralityof encoded symbols from a symbol set that may be recognized by thegraphical code generator, and wherein replacing the encoded secondportion with an unrecognizable second portion comprises: locating afirst reserved symbol of the plurality of reserved symbols in thereference encoded source data, the first reserved symbol indicating abeginning of the encoded second portion; and decoding each encodedsymbol in the encoded second portion.
 127. The system of claim 125,wherein the encoded second portion comprises a plurality of encodedsymbols from a symbol set that may be recognized by the graphical codegenerator, and wherein replacing the encoded second portion with anunrecognizable second portion comprises: locating a first reservedsymbol of the plurality of reserved symbols in the reference encodedsource data, the first reserved symbol indicating a beginning of theencoded second portion; locating a first width identifier in thereference encoded source data, the first width identifier indicating thenumber of encoded symbols in the encoded second portion; and decoding anumber of encoded symbols in the encoded second portion, the numberbeing equal to the first width identifier.
 128. A computer-readablemedium for storing program data, wherein the program data comprisesexecutable instructions for implementing a method comprising: receivingthe source data, the source data comprising a first portion and anunrecognizable second portion that the graphical code generator cannotrecognize; converting the source data into reference encoded source databy: replacing the first portion with a reference identifier; andreplacing the unrecognizable second portion with an encoded secondportion; sending the reference encoded source data to the graphical codegenerator.
 129. The medium of claim 128, wherein the graphical codegenerator is configured to recognize symbols from a symbol set, whereinthe symbol set comprises a plurality of reserved symbols, wherein theunrecognizable second portion comprises a group of data elements, andwherein replacing the unrecognizable second portion with the encodedsecond portion comprises: creating padded data elements by padding eachdata element in the group to a predetermined width of binary digits byadding leading zeroes; concatenating the padded data elements into asingle string of binary digits; dividing the string of binary digitsinto symbols from the symbol set to form a symbol sequence; prependingone of the reserved symbols from the symbol set to the symbol sequenceto form a prepended symbol sequence; and replacing the unrecognizablesecond portion with the prepended symbol sequence.
 130. The medium ofclaim 128, wherein the graphical code generator is configured torecognize symbols from a symbol set, wherein the symbol set comprises aplurality of reserved symbols, wherein the unrecognizable second portioncomprises a group of data elements, and wherein replacing theunrecognizable second portion with the encoded second portion comprises:creating padded data elements by padding each data element in the groupto a predetermined width of binary digits by adding leading zeroes;forming a binary number, the binary number indicating the number of dataelements in the group, the binary number having the predetermined width;concatenating the binary number and the padded data elements into asingle string of binary digits; dividing the string of binary digitsinto symbols from the symbol set to form a symbol sequence; prependingone of the reserved symbols from the symbol set to the symbol sequenceto form a prepended symbol sequence; and replacing the unrecognizablesecond portion with the prepended symbol sequence.
 131. Acomputer-readable medium for storing program data, wherein the programdata comprises executable instructions for implementing a methodcomprising: scanning a machine-readable graphical code to createreference encoded source data, the reference encoded source datacomprising a reference identifier and an encoded second portion;converting the reference encoded source data into source data by:replacing the reference identifier with first affiliated data; andreplacing the encoded second portion with an unrecognizable secondportion, the unrecognizable second portion being unrecognizable to agraphical code generator used to create the machine-readable graphicalcode; providing the source data to the software application.
 132. Themedium of claim 131, wherein the encoded second portion comprises aplurality of encoded symbols from a symbol set that may be recognized bythe graphical code generator, and wherein replacing the encoded secondportion with an unrecognizable second portion comprises: locating afirst reserved symbol of the plurality of reserved symbols in thereference encoded source data, the first reserved symbol indicating abeginning of the encoded second portion; and decoding each encodedsymbol in the encoded second portion.
 133. The medium of claim 131,wherein the encoded second portion comprises a plurality of encodedsymbols from a symbol set that may be recognized by the graphical codegenerator, and wherein replacing the encoded second portion with anunrecognizable second portion comprises: locating a first reservedsymbol of the plurality of reserved symbols in the reference encodedsource data, the first reserved symbol indicating a beginning of theencoded second portion; locating a first width identifier in thereference encoded source data, the first width identifier indicating thenumber of encoded symbols in the encoded second portion; and decoding anumber of encoded symbols in the encoded second portion, the numberbeing equal to the first width identifier.
 134. A method for decoding amachine-readable graphical code into source data that may be used by asoftware application, comprising: scanning the machine-readablegraphical code to create source data, the source data comprising commanddata recognizable by the software application as a command to perform atask; determining whether a user of the software application isauthorized to effect performance of the task; and making the source dataavailable to the software application if the user is authorized toeffect performance of the task.
 135. The method of claim 134, whereindetermining whether the user is authorized to effect performance of thetask comprises accessing an authorization database, the authorizationdatabase comprising a source identifier that identifies the task, theauthorization database further comprising a plurality of useridentifiers associated with the source identifier.
 136. The method ofclaim 135, wherein the authorization database is stored on a server, andwherein accessing the authorization database comprises establishingcommunication with the server over a network.
 137. The method of claim136, wherein determining whether the user is authorized to effectperformance of the task further comprises downloading authorizationinformation about the user from the authorization database, theauthorization information comprising an authorization period for theuser.
 138. The method of claim 135, wherein the authorization databaseis stored on a first server and on a second server, and whereinaccessing the authorization database comprises: attempting to establishcommunication with the first server over a network; and establishingcommunication with the second server over the network.
 139. A method fordecoding a machine-readable graphical code into source data that may beused by a software application, comprising: scanning themachine-readable graphical code to create source data, the source datacomprising a source identifier that identifies a provider of the sourcedata; determining whether the provider of the source data is authorizedto provide the source data to the software application; and making thesource data available to the software application if the provider of thesource data is authorized to provide the source data to the softwareapplication.
 140. The method of claim 139, wherein determining whetherthe provider of the source data is authorized to provide the source datato the software application comprises accessing an authorizationdatabase, the authorization database comprising a plurality of provideridentifiers.
 141. The method of claim 140, wherein each of the pluralityof provider identifiers identifies an authorized provider of sourcedata.
 142. The method of claim 140, wherein each of the plurality ofprovider identifiers identifies an unauthorized provider of source data.143. A method for decoding a machine-readable graphical code into sourcedata that may be used by a software application, comprising: scanningthe machine-readable graphical code to create generic source data, thegeneric source data comprising a substitution tag; converting thegeneric source data into the source data by substituting dynamic datafor the substitution tag; and making the source data available to thesoftware application.
 144. The method of claim 143, wherein the dynamicdata comprises a user identifier.
 145. The method of claim 143, whereinthe dynamic data comprises a serial number of a graphical code readingdevice.
 146. The method of claim 143, wherein the dynamic data comprisesa resolution of a display screen.
 147. The method of claim 143, whereinthe dynamic data comprises an operating system identifier.
 148. Themethod of claim 143, wherein the dynamic data comprises a CD drivedesignation.
 149. A method for encoding source data into alternateencoded source data that may be converted by a graphical code generatorinto a machine-readable graphical code, comprising: receiving the sourcedata, the source data comprising an unrecognizable portion that thegraphical code generator cannot recognize; converting the source datainto the alternate encoded source data by replacing the unrecognizableportion with an encoded portion; and sending the alternate encodedsource data to the graphical code generator.
 150. The method of claim149, wherein the graphical code generator is configured to recognizesymbols from a symbol set, wherein the symbol set comprises a pluralityof reserved symbols, wherein the unrecognizable portion comprises agroup of data elements, and wherein replacing the unrecognizable portionwith the encoded portion comprises: creating padded data elements bypadding each data element in the group to a predetermined width ofbinary digits by adding leading zeroes; concatenating the padded dataelements into a single string of binary digits; dividing the string ofbinary digits into symbols from the symbol set to form a symbolsequence; prepending one of the reserved symbols from the symbol set tothe symbol sequence to form a prepended symbol sequence; and replacingthe unrecognizable portion with the prepended symbol sequence.
 151. Themethod of claim 149, wherein the graphical code generator is configuredto recognize symbols from a symbol set, wherein the symbol set comprisesa plurality of reserved symbols, wherein the unrecognizable portioncomprises a group of data elements, and wherein replacing theunrecognizable portion with the encoded portion comprises: creatingpadded data elements by padding each data element in the group to apredetermined width of binary digits by adding leading zeroes; forming abinary number, the binary number indicating the number of data elementsin the group, the binary number having the predetermined width;concatenating the binary number and the padded data elements into asingle string of binary digits; dividing the string of binary digitsinto symbols from the symbol set to form a symbol sequence; prependingone of the reserved symbols from the symbol set to the symbol sequenceto form a prepended symbol sequence; and replacing the unrecognizableportion with the prepended symbol sequence.
 152. A method for decoding amachine-readable graphical code, comprising: scanning a machine-readablegraphical code to create alternate encoded source data, the alternateencoded source data comprising an alternate encoded portion; convertingthe alternate encoded source data into source data by replacing thealternate encoded portion with an unrecognizable portion, theunrecognizable portion being unrecognizable to a graphical codegenerator used to create the machine-readable graphical code; andproviding the source data to the software application.
 153. The methodof claim 152, wherein the alternate encoded portion comprises aplurality of encoded symbols from a symbol set that may be recognized bythe graphical code generator, and wherein replacing the alternateencoded portion with an unrecognizable portion comprises: locating afirst reserved symbol in the alternate encoded source data, the firstreserved symbol indicating a beginning of the alternate encoded portion;and decoding each encoded symbol in the alternate encoded portion. 154.The method of claim 152, wherein the alternate encoded portion comprisesa plurality of encoded symbols from a symbol set that may be recognizedby the graphical code generator, and wherein replacing the alternateencoded portion with an unrecognizable portion comprises: locating afirst reserved symbol in the alternate encoded source data, the firstreserved symbol indicating a beginning of the alternate encoded portion;locating a first width identifier in the alternate encoded source data,the first width identifier indicating the number of encoded symbols inthe alternate encoded portion; and decoding a number of encoded symbolsin the alternate encoded portion, the number being equal to the firstwidth identifier.